module.exports = {
    // config 实际上是一个实例对象
    chainWebpack: config => {
        // when 方法接收两个参数，
        // 第一个参数指定运行的环境
        // 第二个参数，就是当前运行环境的回调函数
        config.when(process.env.NODE_ENV === 'production', config => {
            config
                .entry('app')
                .clear()
                .add('./src/main-prod.js')

            // 默认情况下，所有的插件和包，都会打包到一个 js 文件中
            // 通过 externals 配置的包，不会打包到默认的 js 文件中
            config.set('externals', {
                vue: 'Vue',
                axios: 'axios',
                lodash: '_',
                echarts: 'echarts',
                nprogress: 'NProgress',
                'vue-quill-editor': 'VueQuillEditor'
            })

            // 通过 plugin 指定插件，然后调用 tap 方法，在回调函数中声明变量即可
            config.plugin('html').tap(args => {
                args[0].isProd = true
                return args
            })
        })

        config.when(process.env.NODE_ENV === 'development', config => {
            config
                .entry('app')
                .clear()
                .add('./src/main-dev.js')

            config.plugin('html').tap(args => {
                args[0].isProd = false
                return args
            })
        })
    }
}